
class Animal{
    public String name;
    private int age;
    public Animal(String name,int age){
        this.name=name;
        this.age=age;
        System.out.println("名字是："+name + "，年龄是：" +age);
    }
    public void eat(){
        System.out.println(name+"正在吃吃吃！");
    }

    @Override
    public String toString() {
        return "Animal{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
class Dog extends Animal{
    public Dog(String name,int age) { //构造方法
        super(name,age);
    }
    public void wangWang(){ //自己的方法
        System.out.println(name+"正在汪汪汪！");
    }

}

public class Mul_1_1103 {
    /*
    有三种方式可以发生向上转型
    1.直接赋值（直接把子类对象给父类引用）
    2.方法传参
    3.返回值
     */

    /*
    向下转型
    Animal animal=new Dog("发财",3);
    //animal.wangWang();

    //不安全
    Dog dog = (Dog)animal;//强转
    dog.wangWang();
     */
    public static void main(String[] args) {
        //向上转型
        //Dog dog=new Dog("发财",3);
        //Animal animal=dog;

        //父类引用 引用了子类对象
        Animal animal=new Dog("发财",3);

        //方法传参
        Dog dog=new Dog("七喜",7);
        func1(dog);

        //返回值
        func2();
    }
    public static void func1(Animal animal){

    }
    public static  Animal func2(){
        return new Dog("六六",6);
    }


    public static void main1(String[] args) {
        //Animal animal=new Animal("球球",12);//实例成员变量
        Dog dog=new Dog("毛球",8);
        dog.eat();
        dog.wangWang();
        Animal animal=new Animal("动物",9);
        //animal.wangWang(); //报错，Animal类中没有wangWang()方法
    }


}
